Code developers are charged with a daunting task of authoring code that is state-consistent in the face of unanticipated or unexpected conditions. State-consistent code refers to code that is deterministic, i.e., keeps track of an executed process. Unanticipated or unexpected conditions refer to asynchronous executions such as thread abort conditions, out-of-memory conditions, and stack overflow conditions. These conditions are asynchronous in the sense that they are not typically expected in the normal execution of the authored code. Although such conditions may occur in most application programming interface environments, typically these conditions are injected by the runtime environment in which the code is executed.
More particularly, the runtime environment provides routines for application programs to perform properly in an operating system because application programs require another software system in order to execute. Thus, an application program calls one or more of the runtime environment routines, which reside between the application program and the operating system, and the runtime environment routines call the appropriate operating system routines.
Examples of runtime environments include: Visual Basic runtime environment; Win32; Java® Virtual Machine runtime environment that is used to run, e.g., Java® routines; or Common Language Runtime (CLR) to compile, e.g., Microsoft.NET™ applications into machine language before executing a calling routine. Deterministic execution of executable code is jeopardized by, among other factors, a runtime environment induced resource failure (e.g., thread abort, out-of-memory, or stack overflow).